const { OPERATION_IS_NOT_ALLOWED } = require("../config/error-constants");
const { checkMoment, checkResource } = require("../service/permission.service");

// 验证：验证登录用户是否有操作moment的权限
// const verifyMomentPermission = async (ctx, next) => {
//     // 1. 取出登录用户的id 修改的动态的id
//     const { momentId } = ctx.params;
//     const { id } = ctx.user;
//     // 2. 查询 user的id是否有修改momentId的权限
//     const isPermission = await checkMoment(momentId, id);
//     if (!isPermission) {
//         return ctx.app.emit('error', OPERATION_IS_NOT_ALLOWED, ctx)
//     }
//     await next()
// }

// const verifyPermission = function (resouce) {
//     return async (ctx, next) => {
//         // 1. 取出登录用户的id 修改的动态的id
//         const { momentId } = ctx.params;
//         const { id } = ctx.user;
//         // 2. 查询 user的id是否有修改momentId的权限
//         const isPermission = await checkMoment(momentId, id);
//         if (!isPermission) {
//             return ctx.app.emit('error', OPERATION_IS_NOT_ALLOWED, ctx)
//         }
//         await next()
//     }
// }

const verifyPermission = async (ctx, next) => {
    // 1. 取出登录用户的id 
    const { id } = ctx.user;
    // 2. 修改的资源的名称 、 id
    const keyName = Object.keys(ctx.params)[0];
    const resouceId = ctx.params[keyName];
    const resourceName = keyName.replace('Id', '')

    // 2. 查询 user的id是否有修改momentId的权限
    const isPermission = await checkResource(resouceId, resourceName, id);
    if (!isPermission) {
        return ctx.app.emit('error', OPERATION_IS_NOT_ALLOWED, ctx)
    }
    await next()
}
module.exports = {
    // verifyMomentPermission,
    verifyPermission
}